#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main(int argc, char const *argv[])
{
    int fd[2], nbytes;
    pid_t childpid;
    // char string[] = "hello world!\n";
    // char readbuffer[80];

    pipe(fd); // 建立管道

    if((childpid = fork()) == -1) {
        perror("fork failed");
        exit(1);
    }

    if(childpid == 0) {
        // 子进程

        close(0); // 关闭子进程的文件句柄0(stdin)

        dup(fd[0]); // 将管道的读句柄定义到stdin

        printf("start execlp\n");
        execlp("sort", NULL);
    }
    if(childpid > 0) {
        // 父进程

        int sort_array[10];
        for(int i=0; i<10; i++) {
            scanf("%d", &sort_array[i]);
        }

        printf("start write to child\n");

        int *ptr = sort_array;
        for(int i=0; i<10; i++) {
            write(fd[1], ptr++, sizeof(int));
        }
    }
    return 0;
}
